This invention relates generally to the initialization of digital electronic circuits and, more specifically, to a technique of loading initial data and/or a control bits into registers of digital circuits.
Digital circuits of almost every type generally include small amounts of volatile register memory that is regularly used as part of the operation of the circuit. The registers may be used for temporary storage of data that is being routed through the circuit, or to control operation of a part or all of the circuit, or both. The registers may be physically positioned together in an implementation of a particular digital circuit, or may be distributed throughout that circuit. In any event, the registers must be loaded with initial values in order to begin operation of the circuit. An example of when this is necessary is when power is first turned on to the circuit.
An example of where such digital circuits are utilized is in a computer system. A computer system is made up of many individual integrated circuit chips that are interconnected by bus and control lines. Typically, a computer system includes a microprocessor (CPU) chip, one or more non-volatile and/or read-only-memory (ROM) chips, one or more volatile random-access-memory (RAM) chips, and a plurality of chips for communicating with various peripherals such as a computer system keyboard, modem, printer, monitor, disk drive, and the like. Each of these peripheral communication chips usually includes a number of registers which need to be loaded with initial data and/or control bits when power is first turned on to the computer system or when the system is desired to be initialized for some other reason.
The current predominant technique for doing so involves maintaining the initial values for each register in the computer system memory, such as in ROM or in disk storage. Upon the computer system being initialized, the CPU then transfers each register's data and/or control bits from such storage to the peripheral registers, one at a time. The registers of one peripheral circuit are loaded, and then those of others are loaded, one at a time. These transfers each take a significant amount of time and thus results in a lengthy execution of an initialization program in complex computer systems.
Therefore, it is primary object of the present invention to provide a simplified and faster initialization technique and circuits for carrying it out.